4.2. JAX-RS Application Model 应用模型

JAX-RS 提供部署无关的抽象类的 Application 用来声明根资源和提供类和根资源,以及提供单例。Web 服务可以扩展这个类声明的根资源提供程序类。例如,

Example 4.1. 部署无关的抽象类的应用模型

  1. public class MyApplication extends Application {
  2. @Override
  3. public Set<Class<?>> getClasses() {
  4. Set<Class<?>> s = new HashSet<Class<?>>();
  5. s.add(HelloWorldResource.class);
  6. return s;
  7. }
  8. }

或者可以重用 ResourceConfig - Jersey 自己实现的 Application 类。这个类可以直接被实例化,然后配置或可扩展和配置代码放置到扩展类的构造函数。该方法通常取决于所选的部署运行时。

与 Application 相比,ResourceConfig 提供了先进的功能来简化 JAX-RS 组件注册,如扫描根资源、类提供者提供的路径或一组包名的集合。所有 JAX-RS 组件类都会手动注册或者扫描期间找到的类都会自动添加到 getClasses 所返回的类的集合中。例如,下面的 application 类继承自 ResourceConfig 在部署时会扫描包 org.foo.rest 和 org.bar.rest 中的 JAX-RS 组件:

Example 4.2. 在应用模型中重用 Jersey 的实现

  1. public class MyApplication extends ResourceConfig {
  2. public MyApplication() {
  3. packages("org.foo.rest;org.bar.rest");
  4. }
  5. }